package clientTest;

import java.io.*;
import java.net.*;

public class ClientTCP {


	private Socket socket; // le socket client
	private PrintWriter os; // output stream
	private BufferedReader is; // input stream
	final int port = 1056;
	 
	
	public ClientTCP() {
		try {
			System.out.println("connexion au serveur");
			socket = new Socket("157.169.101.30", port);
			os = new PrintWriter(socket.getOutputStream(),true);
			is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		} catch (UnknownHostException e) {
			System.err.println("Don't know about host: hostname");
		} catch (IOException e) {
			System.err
			.println("Couldn't get I/O for the connection to: hostname");
		}
		if (socket != null && os != null && is != null) {
			System.out.println("Connexion reussie");
		} else {
			System.out.println("Connexion échouée");
		}
	}

	/**
	 * Envoyer une requête pour ajouter un surnom
	 * @param surnom
	 * 			le surnom à ajouter
	 * @param nom
	 * 			le nom cible
	 */
	public void ajouter(String nom, String surnom) {
		String requete = "enregistrer_" + nom + "_" + surnom;
		os.println(requete);
		String rep = "";
		try {
			System.out.println("Réponse : ");
			rep = is.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(rep);
	}
	
	/**
	 * Envoyer une requête pour modifier un nom
	 * @param surnom
	 * 			le surnom à ajouter
	 * @param nom
	 * 			le nom cible
	 */
	public void modifier(String nom, String surnom, String newSurnom) {
		String requete = "modifier_" + nom + "_" + surnom + "_" + newSurnom;
		os.println(requete);
		String rep = "";
		try {
			System.out.println("Réponse : ");
			rep = is.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(rep);
	}

	/**
	 * Envoyer une requête pour obtenir la list des surnom
	 */
	public void lister() {
		String requete = "liste";
		os.println(requete);
		String rep = "";
		try {
			System.out.println("Réponse : ");
			rep = is.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(rep);
	}
	
	/**
	 * Envoyer une requête pour obtenir la list d'un nom donné
	 */
	public void lister(String nom) {
		String requete = "demande_" + nom;
		os.println(requete);
		String rep = "";
		try {
			System.out.println("Réponse : ");
			rep = is.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(rep);
	}

	/**
	 * Envoyer une requête pour fermer la connexion avec le serveur
	 */
	public void quitter() {
		String requete = "deconnexion";
		os.println(requete);
		String rep = "";
		try {
			System.out.println("Réponse : ");
			rep = is.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(rep);
	}

	/**
	 * Envoyer une requête pour fermer la connexion avec le serveur
	 */
	public void commandeNonReconnue() {
		String requete = "dinguerie";
		os.println(requete);
		String rep = "";
		try {
			System.out.println("Réponse : ");
			rep = is.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(rep);
	}
	public static void main(String[] args) {
		ClientTCP client = new ClientTCP();
		client.ajouter("nolan", "papa");
		client.ajouter("nolan", "nolspot");
		client.ajouter("alex", "bourse");
		client.ajouter("nathan", "sliptaché");

		client.lister();
		client.lister("nolan");
		client.lister("nathan");
		client.lister("slip");
		
		client.modifier("nolan", "papa", "pasunezoulette");
		client.lister("nolan");

		client.commandeNonReconnue();
		
		client.quitter();
	}
}

